/**
* 通用datagrid service模块，提供对datagrid的常用功能支持
* @Date:    2015-6-16
* @author:  Jackson wang
* @version: 1.0
* @since:   1.0
*/
app.addService('datagrid-serv',	function(application){

	'use strict';
	
	var msg_serv=null;	

	return {
		behaviors:['getElement-beha'],
		/**
		*
		* 初始化方法，进行模块内部的初始化工作		
		*/
		init:function(){
			msg_serv = application.getService("msg-serv");
		},

		/**
		*
		* 销毁方法，清除遗留数据及方法绑定，释放内存		*
		*/
		destory:function(){
			msg_serv = null;
		},

		/**
		* 根据表单名称获取表单字段值，并生成json对象返回
		* @param _options.target datagrid对象
		* @param _options.data 待添加的数据行
		* @param _options.container 目标datagrid对象的上级容器
		* @return 表单json对象
		*
		*/
		addRow:function(_options){
			//判断目标对象参数类型，获取目标对象
			var retVal;
			var _data = getData(_options);
			var _target = getTarget(_options);
			//判断目标对象是否为空
			if(_data!=null && _target!=null){				
				//判断待添加数据是否为空				
				$(_target).datagrid('appendRow',_options.data);
				retVal = 1;				
			}			
			return retVal;							
		},

		/**
		* 在datagrid对象指定行之前添加一条数据
		* @param options.datagrid 目标对象
		* @param options.data 待添加的数据对象
		* @param options.index 参照行序号
		* @return 添加成功返回1，添加失败返回0，数据对象为空返回-1，目标对象为空返回-2
		*/
		insertRowBefore:function(_options){
			var retVal;
			var _data = getData(_options);
			var _target = getTarget(_options);
			//判断目标对象是否为空
			if(_data!=null && _target!=null){
				
				var　_rowIndex=_options.index!=null?_options.index: 
					$(_target).datagrid('getRowIndex',$(_target).datagrid('getSelected'));
				
				//判断待添加数据是否为空
				if(_rowIndex>0){
					$(_target).datagrid('insertRow',{index:_rowIndex,data:_data});
					retVal = 1;		
				}
			}			
			return retVal;			
		},
		
		/**
		* 在datagrid对象指定行之后添加一条数据
		* @param options.datagrid 目标对象
		* @param options.data 待添加的数据对象
		* @param options.index 参照行序号
		* @return 添加成功返回1，添加失败返回0，数据对象为空返回-1，目标对象为空返回-2
		*/
		insertRowAfter:function(){
			var retVal;
			var _data = getData(_options);
			var _target = getTarget(_options);
			//判断目标对象是否为空
			if(_data!=null && _target!=null){
				
				var　_rowIndex=_options.index!=null?_options.index: 
					$(_target).datagrid('getRowIndex',$(_target).datagrid('getSelected'));
				
				//判断待添加数据是否为空
				if(_rowIndex>0){
					$(_target).datagrid('insertRow',{index:_rowIndex+1,data:_data});
					retVal = 1;		
				}
			}			
			return retVal;				
		},
		
		/**
		* 更新datagrid对象指定行的数据
		* @param options.target 目标对象
		* @param options.data 待添加的数据对象
		* @param options.index 目标行序号
		* @return 更新成功返回1，失败返回空值
		*/
		updateRow:function(_options){
			var retVal;
			var _data = getData(_options);
			var _target = getTarget(_options);
			//判断目标对象是否为空
			if(_data!=null && _target!=null){
				
				var　_rowIndex=options.index!=null?options.index: 
					$(_target).datagrid('getRowIndex',$(_target).datagrid('getSelected'));
				
				//判断待添加数据是否为空
				if(_rowIndex>0){
					$(_target).datagrid('updateRow',{index:_rowIndex,data:_data});
					retVal = 1;
				}
			}			
			return retVal;				
		},
		/**
		* 删除列表中的选定行
		* @param _options.target 表单名称
		* @param _options.container 表单父级容器
		* @param options.index 目标行序号
		* @return 删除成功返回1，失败返回空值
		*/
		delRow:function(_options){
			var retVal;			
			
			var _target = getTarget(_options);
			
			//判断目标对象是否为空
			if(_target!=null){
				
				var　_rowIndex=_options.index!=null?_options.index: 
					$(_target).datagrid('getRowIndex',$(_target).datagrid('getSelected'));
				
				//判断待添加数据是否为空
				if(_rowIndex>0){
					$(_target).datagrid('deleteRow',_rowIndex);
					retVal = 1;
				}
			}			
			return retVal;	

				
		}
		
	};

});